package com.hsurosy.hsuchain.nft.job.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * XxlJob 属性配置类
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 4:32
 * @Description
 * @Version: v1.0.0
 */
@ConfigurationProperties(prefix = XxlJobProperties.PREFIX)
public class XxlJobProperties {

    /**
     * 配置项前缀
     */
    public static final String PREFIX = "spring.xxl.job";

    /**
     * 是否启用 XXL-JOB
     */
    private boolean enabled;

    /**
     * 管理员地址，多个地址以逗号分隔
     */
    private String adminAddresses;

    /**
     * 访问令牌，用于安全认证
     */
    private String accessToken;

    /**
     * 应用名称，作为注册时的标识
     */
    private String appName;

    /**
     * 执行器的 IP 地址
     */
    private String ip;

    /**
     * 执行器的端口号
     */
    private int port;

    /**
     * 日志文件存储路径
     */
    private String logPath;

    /**
     * 日志保留天数
     */
    private int logRetentionDays = 30;

    // Getters and Setters

    /**
     * 获取是否启用 XXL-JOB
     *
     * @return 是否启用 XXL-JOB
     */
    public boolean isEnabled() {
        return enabled;
    }

    /**
     * 设置是否启用 XXL-JOB
     *
     * @param enabled 是否启用 XXL-JOB
     */
    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    /**
     * 获取管理员地址
     *
     * @return 管理员地址
     */
    public String getAdminAddresses() {
        return adminAddresses;
    }

    /**
     * 设置管理员地址
     *
     * @param adminAddresses 管理员地址
     */
    public void setAdminAddresses(String adminAddresses) {
        this.adminAddresses = adminAddresses;
    }

    /**
     * 获取访问令牌
     *
     * @return 访问令牌
     */
    public String getAccessToken() {
        return accessToken;
    }

    /**
     * 设置访问令牌
     *
     * @param accessToken 访问令牌
     */
    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }

    /**
     * 获取应用名称
     *
     * @return 应用名称
     */
    public String getAppName() {
        return appName;
    }

    /**
     * 设置应用名称
     *
     * @param appName 应用名称
     */
    public void setAppName(String appName) {
        this.appName = appName;
    }

    /**
     * 获取执行器的 IP 地址
     *
     * @return IP 地址
     */
    public String getIp() {
        return ip;
    }

    /**
     * 设置执行器的 IP 地址
     *
     * @param ip IP 地址
     */
    public void setIp(String ip) {
        this.ip = ip;
    }

    /**
     * 获取执行器的端口号
     *
     * @return 端口号
     */
    public int getPort() {
        return port;
    }

    /**
     * 设置执行器的端口号
     *
     * @param port 端口号
     */
    public void setPort(int port) {
        this.port = port;
    }

    /**
     * 获取日志文件存储路径
     *
     * @return 日志路径
     */
    public String getLogPath() {
        return logPath;
    }

    /**
     * 设置日志文件存储路径
     *
     * @param logPath 日志路径
     */
    public void setLogPath(String logPath) {
        this.logPath = logPath;
    }

    /**
     * 获取日志保留天数
     *
     * @return 日志保留天数
     */
    public int getLogRetentionDays() {
        return logRetentionDays;
    }

    /**
     * 设置日志保留天数
     *
     * @param logRetentionDays 日志保留天数
     */
    public void setLogRetentionDays(int logRetentionDays) {
        this.logRetentionDays = logRetentionDays;
    }
}
